Estoy tratando de almacenar valores usando VueX. Estoy usando Vuex 4.0 no el 3.0.
Así que estoy tratando de comprometer un valor como este, como estaba acostumbrado en Vuex 3:
... this.$store.commit("changerusername", u) ...Así que probé esto:
Dentro de mi main.js tengo esto:
import { createApp } from "vue"; import { store } from "./store"; import App from "./App.vue"; const app = createApp(App); app.use(store); app.mount("#app"); Dentro de mi store/store.js , tengo esto:
import vue from "vue"; import { createStore } from "vuex"; export const store = createStore({ state: { username: null, token: null, }, getters: { getUsername: function (state) { return `${state.username}`; }, }, mutation: { changeusername: function (state, newusername) { state.username = newusername; } }, }); App.vue tiene esto:
<template> <router-view /> </template> <script> import { defineComponent } from "vue"; export default defineComponent({ name: "app", }); </script>Ok ahora, dentro del archivo donde quiero hacer mi compromiso, escribí esto:
Importaciones:
import { useQuasar } from "quasar"; import { defineComponent } from "vue"; import { ref } from "vue"; import axios from "axios"; import { useStore } from "vuex";La puesta en marcha :
setup() { const store = useStore(); return { store, }; },Y lo uso así:
loginArrow: function (u, p) { this.store.commit("changeusername", u); }, Pero cuando hago esto, aparece este error: injection "store" not found. .
¿Que estoy haciendo mal?
Si está utilizando la API de composición, puede cambiar su función loginArrow a algo como esto porque la palabra clave this no funciona en la API de composición:
const loginArrow = (u, p) => { store.commit("changeusername", u); } También puede intentar usar store.value.commit(...) en lugar de store.commit(...)
Encontré la razón por la que eso no funcionaba. no estaba en la función sino en el quasar directamente.
En la carpeta app/.quasar hay 4 archivos app.js, client-entry.js, client-prefetch.js y quasar-user-options.js.
Normalmente se configura automáticamente, pero no sé por qué quasar no lo hizo, así que lo hice manualmente comparándolo con otro proyecto.
Gracias por la ayuda !